Executable and Linkable Format(ELF)
Executable and Linkable Format(ELF)
コンパイラが生成するオブジェクト、および、ライブラリとリンクされた実行ファイルのファイルフォーマット オブジェクトにはコード、データ等の情報をもつ。
Linuxではデファクトスタンダードの実行ファイル形式らしい
良い部分
ELFでは動的な共有ライブラリの利用と,C++言語のサポートが容易
ELFのヘッダ
ELFには3種類のヘッダがある
ELFヘッダ
プログラムヘッダテーブル
セクションヘッダ
ELFヘッダ
ファイルの先頭に存在
ELF識別子、アーキテクチャ情報および、他の2つのヘッダへの情報を持つ。
ファイル編成を記述する「ロードマップ」を持つ
プログラムヘッダ
ファイル上のどの部分(セグメント)がどのような属性で何処に読み込まれるかを保持するヘッダであり、ファイルローダによって扱われる。実行時にELFヘッダに続いてディスクから何らかの形で読み込まれるセグメントの数だけ存在する。直接読み込まれるわけではないオブジェクトファイルには存在しないことがある。
セクションヘッダ
オブジェクトファイルの論理的な構造を記述する部分で、ヘッダと名前がついているが実際にはファイルの最後あたりに置かれていることが多い。ここはリンカやデバッガによって参照されることがある。セクションはセクション名があるが、それは特殊なセクションに置かれ何番目の文字列かという指し方を行う。このことによって、エントリそのものは固定長にしつつセクション名の長さ制限を取り払っている。
セグメント(Segments)
code:memo
$ readelf -h /usr/bin/readelf
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x9250
Start of program headers: 64 (bytes into file)
Start of section headers: 656440 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 13
Size of section headers: 64 (bytes)
Number of section headers: 30
Section header string table index: 29
確認用
Q. ELF
Q. なにから構成されるか
Q. ELFヘッダ
Q. プログラムヘッダ
Q. セクションヘッダ
Q. ELFが影響が出るのはどんなとき
関連
関連コマンド
実行ファイル形式
ヘッダ
参考
メモ